home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / COMAL / Z-Misc Series / (k)za.d64 / ml'procs < prev    next >
Text File  |  2007-03-01  |  4KB  |  168 lines

  1. 9000 // DELETE "0:ML'PROCS"
  2. 9005 //
  3. 9010 // LIST   "0:ML'PROCS"
  4. 9015 //
  5. 9020 //  BY: DAVID STIDOLPH
  6. 9025 //         AND
  7. 9030 //      JESSE KNIGHT, JR.
  8. 9035 //
  9. 9040 // BEFORE YOU USE THESE PROCEDURES
  10. 9045 // YOU MUST HAVE RUN ML'SETUP OR
  11. 9050 // PROC ML'DATA IN THAT PROGRAM.
  12. 9055 //
  13. 9060 // OTHERWISE YOU WILL CRASH COMAL!
  14. 9065 //
  15. 9070 PROC QUOTE'MODE(ON'OFF) CLOSED
  16. 9075 IF ON'OFF THEN
  17. 9080 POKE 169,0
  18. 9085 ELSE 
  19. 9090 POKE 169,1
  20. 9095 ENDIF 
  21. 9100 ENDPROC QUOTE'MODE
  22. 9105 //
  23. 9110 PROC CLOCK'DISPLAY(ON'OFF) CLOSED
  24. 9115 IF ON'OFF THEN
  25. 9120 POKE 182,1
  26. 9125 ELSE 
  27. 9130 POKE 182,0
  28. 9135 ENDIF 
  29. 9140 ENDPROC CLOCK'DISPLAY
  30. 9145 //
  31. 9150 PROC SPRITE'FLIP'LEFT'RIGHT(BLK) 
  32. 9155 IF PEEK(52736)=165 THEN
  33. 9160 POKE 247,BLK
  34. 9165 SYS 52736
  35. 9170 ENDIF 
  36. 9175 ENDPROC SPRITE'FLIP'LEFT'RIGHT
  37. 9180 //
  38. 9185 PROC SPRITE'FLIP'UP'DOWN(BLK) 
  39. 9190 IF PEEK(53097)=165 THEN
  40. 9195 POKE 247,BLK
  41. 9200 SYS 52736
  42. 9205 ENDIF 
  43. 9210 ENDPROC SPRITE'FLIP'UP'DOWN
  44. 9215 //
  45. 9220 PROC SETUP'IRQ 
  46. 9225 IF PEEK(52843)=120 AND PEEK(788)=85 AND PEEK(789)=45 THEN
  47. 9230 SYS 52843
  48. 9235 ENDIF 
  49. 9240 ENDPROC SETUP'IRQ
  50. 9245 //
  51. 9250 PROC RESTORE'IRQ 
  52. 9255 IF PEEK(52868)=120 AND PEEK(788)=147 AND PEEK(789)=206 THEN
  53. 9260 SYS 52868
  54. 9265 ENDIF 
  55. 9270 ENDPROC RESTORE'IRQ
  56. 9275 //
  57. 9280 PROC REVERSE'SCREEN 
  58. 9285 IF PEEK(53045)=169 THEN
  59. 9290 SYS 53045
  60. 9295 ENDIF 
  61. 9300 ENDPROC REVERSE'SCREEN
  62. 9305 //
  63. 9310 PROC SAVE'SCREEN(FILENAME$) CLOSED
  64. 9315 IF PEEK(53169)=166 THEN
  65. 9320 OPEN FILE 79,FILENAME$+",P",WRITE
  66. 9325 POKE 247,79
  67. 9330 SYS 53169
  68. 9335 CLOSE FILE 79
  69. 9340 ENDIF 
  70. 9345 ENDPROC SAVE'SCREEN
  71. 9350 //
  72. 9355 //THE REST OF THESE PROCEDURES ARE
  73. 9360 //FOR READING SPRITES DEFINED BY
  74. 9365 //STRINGS.  (I.E. ".....#####...")
  75. 9370 //IF YOU DON'T NEED THEM THEN
  76. 9375 //DEL 9355-   TO SAVE MEMORY.
  77. 9380 //
  78. 9385 FUNC FIND'STRING CLOSED
  79. 9390 POINTER1:=PEEK(51)
  80. 9395 POINTER2:=PEEK(52)
  81. 9400 ADDRESS:=POINTER2*256+POINTER1
  82. 9405 RETURN ADDRESS+4
  83. 9410 ENDFUNC FIND'STRING
  84. 9415 //
  85. 9420 PROC READ'SPRITE'H(BLK) CLOSED
  86. 9425 CHECK'SPRITE'ML'DATA
  87. 9430 DIM LINE$ OF 24
  88. 9435 DIM SPRITE$ OF 64
  89. 9440 SPRITE$:=""; COUNT:=1
  90. 9445 READ LINE$
  91. 9450 WHILE LINE$(1)<>"M" DO
  92. 9455 WHILE LEN(LINE$)<24 DO LINE$:=LINE$+"0"
  93. 9460 DEF'LINE(LINE$,SPRITE$,COUNT)
  94. 9465 READ LINE$
  95. 9470 ENDWHILE 
  96. 9475 END'SPRITE(BLK,LINE$,SPRITE$,COUNT)
  97. 9480 ENDPROC READ'SPRITE'H
  98. 9485 //
  99. 9490 PROC READ'SPRITE'M(BLK) CLOSED
  100. 9495 DIM SPRITE$ OF 64, LINE$ OF 12
  101. 9500 DIM F'LINE$ OF 24
  102. 9505 SPRITE$:=""; LINE$:=""
  103. 9510 CHECK'SPRITE'ML'DATA
  104. 9515 COUNT:=1
  105. 9520 READ LINE$
  106. 9525 WHILE LINE$(1) IN "0123" AND COUNT<64 DO
  107. 9530 WHILE LEN(LINE$)<12 DO LINE$:=LINE$+"0"
  108. 9535 F'LINE$:=""
  109. 9540 FOR LP1:=1 TO 12 DO
  110. 9545 CASE LINE$(LP1) OF
  111. 9550 WHEN "0"
  112. 9555 F'LINE$:=F'LINE$+"00"
  113. 9560 WHEN "1"
  114. 9565 F'LINE$:=F'LINE$+"01"
  115. 9570 WHEN "2"
  116. 9575 F'LINE$:=F'LINE$+"10"
  117. 9580 WHEN "3"
  118. 9585 F'LINE$:=F'LINE$+"11"
  119. 9590 OTHERWISE 
  120. 9595 PRINT "ERROR IN SPRITE DATA STATEMENTS"
  121. 9600 STOP 
  122. 9605 ENDCASE 
  123. 9610 ENDFOR LP1
  124. 9615 DEF'LINE(F'LINE$,SPRITE$,COUNT)
  125. 9620 READ LINE$
  126. 9625 ENDWHILE 
  127. 9630 END'SPRITE(BLK,LINE$,SPRITE$,COUNT)
  128. 9635 ENDPROC READ'SPRITE'M
  129. 9640 //
  130. 9645 PROC DEF'LINE(REF LINE$,REF SPRITE$,REF COUNT) CLOSED
  131. 9650 IF LINE$="" THEN NULL
  132. 9655 ADDR:=FIND'STRING
  133. 9660 POKE 53011,ADDR MOD 256
  134. 9665 POKE 53012,ADDR DIV 256
  135. 9670 SYS 52992
  136. 9675 FOR X:=0 TO 2 DO
  137. 9680 SPRITE$(COUNT):=CHR$(PEEK(680+X))
  138. 9685 COUNT:+1
  139. 9690 ENDFOR X
  140. 9695 ENDPROC DEF'LINE
  141. 9700 //
  142. 9705 PROC END'SPRITE(BLK,LINE$,REF SPRITE$,REF COUNT) CLOSED
  143. 9710 WHILE COUNT<64 DO
  144. 9715 SPRITE$(COUNT):=CHR$(0)
  145. 9720 COUNT:+1
  146. 9725 ENDWHILE 
  147. 9730 CASE LINE$(1) OF
  148. 9735 WHEN "H","╚"
  149. 9740 SPRITE$(64):=CHR$(0)
  150. 9745 WHEN "M","═"
  151. 9750 SPRITE$(64):=CHR$(1)
  152. 9755 OTHERWISE 
  153. 9760 PRINT "ERROR IN SPRITE DATA STATEMENTS"
  154. 9765 STOP 
  155. 9770 ENDCASE 
  156. 9775 DEFINE BLK,SPRITE$
  157. 9780 ENDPROC END'SPRITE
  158. 9785 //
  159. 9790 PROC CHECK'SPRITE'ML'DATA 
  160. 9795 IF PEEK(52992)<>169 THEN
  161. 9800 PRINT "ERROR -- MACHINE LANGUAGE PACKAGE"
  162. 9805 PRINT "         NOT PRESENT.  PLEASE LOAD"
  163. 9810 PRINT "         BEFORE RUNNING."
  164. 9815 STOP 
  165. 9820 ENDIF 
  166. 9825 ENDPROC CHECK'SPRITE'ML'DATA
  167. 9830 //
  168.